package com.duoec.graphql.provider.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 用于标注响应体字段，被标注的字段值是通过dataFetch获取
 * @author xuwenzhen
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface GraphqlField {
    /**
     * Controller类
     *
     * @return
     */
    Class value() default Object.class;

    /**
     * Provider name
     * @return
     */
    String name() default "";

    /**
     * 指定controller类全名
     *
     * @return
     * @demo com.duoec.graphql.house.controller.FlatApiController
     */
    String controller() default "";

    /**
     * 获取数据的方法
     *
     * @return
     */
    String method() default "";

    /**
     * 依赖到字段
     *
     * @return
     */
    String[] dependency() default {};
}
